package com.br.servlets;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import com.br.dao.SalasDao;
import com.br.model.Jogador;
import com.br.model.Sala;
import com.br.util.StopUtils;

@WebServlet(value = "/CriarSala")
public class CriarSala extends HttpServlet {

	private static final long serialVersionUID = 1L;

	private static Logger logger = LogManager.getLogger(CriarSala.class.getName());
	
	protected void service(HttpServletRequest req, HttpServletResponse res)
			throws ServletException, IOException {
		
		Jogador eu = (Jogador) req.getSession(true).getAttribute("jogador");
		if(eu == null){
			logger.debug("Sessao nao iniciada!");
			return;
		}
		
		logger.debug("INIT "+StopUtils.logAllParameters(req));
		
		SalasDao dao = new SalasDao();

		String sala = req.getParameter("sala");
		String myid = req.getParameter("myid");

		JSONObject response = new JSONObject();

		try {
			if (StopUtils.notEmpty(sala) && StopUtils.notEmpty(myid)) {

				JSONObject salaJson = new JSONObject(sala);
				
				// cria uma sala
				Sala s = new Sala();
				
				Jogador j = new Jogador();
				j.setUid(myid);

				s.setNome(salaJson.getString("nome"));
				s.setQntVagas(salaJson.getInt("vagas"));
				s.setRodadas(salaJson.getInt("rodadas"));
				s.setDono(j);
				s.getJogadores().add(j);
				
				JSONArray temas = salaJson.getJSONArray("temas");
				
				for (int i = 0; i < temas.length(); i++) {
					s.getTemas().add(temas.getString(i));
				}

				dao.add(s);

				response.put("error", false);
			} else {
				response.put("error", true);
				response.put("errorMsg", "Campos enviados inválidos.");
			}

		} catch (JSONException e) {
			logger.error("Erro JSON", e);
		}

		// retorna o json
		res.setCharacterEncoding("UTF-8");
		res.setContentType("application/json");
		res.getOutputStream().write(response.toString().getBytes());
		res.getOutputStream().flush();
		
		logger.debug("END "+response.toString());
	}

}
